/*
 * OpenMP version;
 * @param inA Input n-by-m matrix 
 * @param inB Input n-by-m matrix 
 * @param n The number of data set
 * @param m The number of data element in each data set
 * @param out Output of upper triangle n-by-n matrix
 */
void corrcoefmatrixAB_omp(float *out, float *inA, float *inB, int n, int m);

/* 
 * OpenMP with tiling
 */
void corrcoefmatrixAB_omp_tiled(float *out, float *inA, float *inB, int n, int m);

/*
 * OpenMP version;
 * @param in Input n-by-m matrix 
 * @param n The number of data set
 * @param m The number of data element in each data set
 * @param out Output of upper triangle n-by-n matrix
 */
void corrcoefmatrix_cuda(float *out, float *in, int n, int m);

/*
 * CUDA version
 */
__global__ void corrcoefmatrixAB_cuda(float *out, float *inA, float *inB, int n, int m); 
